/**
* @Description:封装通用日期工具类
* @updateTime shusm 2017/10/28 16:09
*/

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

/**
 * @Description:封装日期框datePicker--时间格式(yyyy-mm-dd)
 * @updateTime shengming 2017/10/28 14:02
 */
var DateUtils = {};
DateUtils.datePickerForDay = function ($el,target,opt) {
    var defaults = {
        language: "zh-CN",
        autoclose: true,//选中之后自动隐藏日期选择框
        clearBtn: true,//清除按钮
        format: "yyyy-mm-dd",//日期格式
        //startDate: s,    默认开始时间
        // weekStart: 1,    //一周从那一天开始，默认值为:0,范围：0-6
        todayBtn: 1,    //默认值：false，为true时，底部显示today，不选中，为linked时当天日期被选中
        // autoclose: 1,    //选择一个日期后是否立即关闭此选择框
        // todayHighlight: 1,  //高亮当前日期
        startView: 2,     // 日期时间选择器打开之后首先显示的视图，默认值为：2，0:hour,1:day,2:mouth,3:year,4:decade
//         forceParse: 0,    //强制解析文本框的值
//         showMeridian: 1,
        minView: 2,

    };
    var option = $.extend({}, defaults, opt);
    $el.datetimepicker(option)
        .on('changeDate', function (e) {
            top.layerForm.vm[target.vmTarget][target.property] == new Date(e.date).Format("yyyy-MM-dd");
        });
}

//时间 http://www.bootcss.com/p/bootstrap-datetimepicker/
DateUtils.datetimepicker= function ($el,target,opt) {
    var defaults = {
        language: "zh-CN",
        todayBtn: 1,
        autoclose: 1,//选中之后自动隐藏日期选择框
        clearBtn: 1,//清除按钮
        format: "yyyy-mm-dd hh:ii:ss",//日期格式
        weekStart: 1,
        todayHighlight: 1,
        startView: 2,
        forceParse: 0,
        keyboardNavigation:true,
        pickerPosition:'bottom-left',
        // showMeridian: 1
    };
    var option = $.extend({}, defaults, opt);
    $el.datetimepicker(option)
        .on('changeDate',function(e){
            top.layerForm.vm[target.vmTarget][target.property] = new Date(e.date).Format("yyyy-MM-dd hh:mm:ss");
        });
};


DateUtils.datePickerForDayForMonth = function ($el,target,opt) {
    var defaults = {
        language: "zh-CN",
        autoclose: true,//选中之后自动隐藏日期选择框
        clearBtn: true,//清除按钮
        format: "yyyy-mm",//日期格式
        //startDate: s,    默认开始时间
        // weekStart: 1,    //一周从那一天开始，默认值为:0,范围：0-6
        // todayBtn: 1,    //默认值：false，为true时，底部显示today，不选中，为linked时当天日期被选中
        // autoclose: 1,    //选择一个日期后是否立即关闭此选择框
        todayHighlight: 1,  //高亮当前日期
        startView: 3,     // 日期时间选择器打开之后首先显示的视图，默认值为：2，0:hour,1:day,2:mouth,3:year,4:decade
        // forceParse: 0,    //强制解析文本框的值
        minViewMode: 1,
        // showMeridian: 1,
        minView: 3,
    };
    var option = $.extend({}, defaults, opt);
    $el.datetimepicker(option)
        .on('changeDate', function (e) {
            top.layerForm.vm[target.vmTarget][target.property] = new Date(e.date).Format("yyyy-MM");
        });
}
DateUtils.getNowFormatDate = function () {
    var date = new Date();
    // var seperator1 = "-";
    // var seperator2 = ":";
    var seperator1 = "";
    var seperator2 = "";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
        + "" + date.getHours() + seperator2 + date.getMinutes()
        + seperator2 + date.getSeconds();
    return currentdate;
};

/**
 * 计算两个月份相差月
 * @param startMonth
 * @param endMonth
 * @returns {number}
 */
DateUtils.getDiff = function (startMonth,endMonth) {
    if(startMonth==undefined || startMonth==null || endMonth==undefined || endMonth==null){
        return null;
    };
    var endDate = new Date(endMonth);
    var startDate = new Date(startMonth);
    var yearToMonth = (endDate.getFullYear() - startDate.getFullYear()) * 12;

    // 计算年份相差月份
    var startMon = startDate.getMonth();// 开始日期-月份
    var endMon = endDate.getMonth();// 结束日期-月份
    var diffMonth = yearToMonth + startMon - endMon;
    return diffMonth;
};